WebXR平颿€åºã®è©³çŽ°è§£èª¬ã衚é¢èªèãARé 眮æè¡ãæé©åæŠç¥ãç¶²çŸ ããäžçäžã®å€æ§ãªããã€ã¹ãç°å¢ã§æ²¡å ¥æãšã¢ã¯ã»ã·ããªãã£ã®é«ãäœéšãåµé ããæ¹æ³ãæ¢ããŸãã
WebXR平颿€åºïŒè¡šé¢èªèãšARé 眮ããã¹ã¿ãŒããã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«å¯Ÿå¿ãã
WebXRã¯ããŠã§ããã©ãŠã¶å ã§çŽæ¥ãé åçãªæ¡åŒµçŸå®ïŒARïŒäœéšãåµé ããããã®åŒ·åãªå ¥å£ãæäŸããŸããå€ãã®ARã¢ããªã±ãŒã·ã§ã³ã®åºç€ãšãªãã®ã平颿€åºã§ããããã«ãããã¢ããªã±ãŒã·ã§ã³ã¯å®äžçã®ç°å¢ãçè§£ããä»®æ³ã³ã³ãã³ããã·ãŒã ã¬ã¹ã«çµ±åã§ããŸãããã®ããã°èšäºã§ã¯ãWebXRã®å¹³é¢æ€åºã«é¢ããå æ¬çãªã¬ã€ããæäŸãã衚é¢èªèãARé 眮æè¡ããããŠã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«é¿ããã€ã³ã¯ã«ãŒã·ãã§é«æ§èœãªäœéšãåµé ããããã®ãã¹ããã©ã¯ãã£ã¹ã«çŠç¹ãåœãŠãŸãã
WebXR平颿€åºãšã¯ïŒ
平颿€åºãšã¯ãããã€ã¹ã®ã»ã³ãµãŒïŒéåžžã¯ã«ã¡ã©ãšã¢ãŒã·ã§ã³ã»ã³ãµãŒïŒã䜿çšããŠããŠãŒã¶ãŒã®ç©ççç°å¢ã«ããå¹³ããªé¢ãèå¥ããçè§£ããããã»ã¹ã§ããWebXRã¯ãããã®ã»ã³ãµãŒå ¥åãšã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã¢ã«ãŽãªãºã ãæŽ»çšããŠãåºãããŒãã«ãå£ãããã«ã¯å€©äºãªã©ã®æ°Žå¹³ããã³åçŽãªå¹³é¢ãç¹å®ãã远跡ããŸãã
å¹³é¢ãæ€åºããããšãWebXRã¢ããªã±ãŒã·ã§ã³ã¯ãã®æ å ±ã䜿çšããŠæ¬¡ã®ããšãè¡ããŸãïŒ
- ä»®æ³ãªããžã§ã¯ããå®äžçã«åºå®ïŒã¢ã³ã«ãŒïŒããããããæ¬åœã«ãã®ç°å¢ã«ååšãããã®ããã«èŠããã
- ãŠãŒã¶ãŒãå®äžçã®è¡šé¢ã«é¢é£ããŠä»®æ³ãªããžã§ã¯ããæäœã§ããã€ã³ã¿ã©ã¯ãã£ããªäœéšãå¯èœã«ããã
- ç¥èŠãããç°å¢ã«åºã¥ããŠããªã¢ã«ãªç §æã圱ãæäŸããã
- ä»®æ³ãªããžã§ã¯ããšå®äžçã®è¡šé¢ãšã®éã§è¡çªæ€åºãå®è£ ããã
ãªã平颿€åºã¯WebXRã«ãšã£ãŠéèŠãªã®ãïŒ
平颿€åºã¯ã説åŸåã®ããä¿¡ããããARäœéšãåµé ããããã«äžå¯æ¬ ã§ããããããªããã°ãä»®æ³ãªããžã§ã¯ãã¯åã«ç©ºéã«æµ®ããã§ããã ãã§ããŠãŒã¶ãŒã®åšå²ããåãé¢ãããæ¡åŒµçŸå®ã®å¹»æ³ãå£ããŠããŸããŸãã
衚é¢ãæ£ç¢ºã«æ€åºãçè§£ããããšã§ã平颿€åºã¯æ¬¡ã®ãããªARã¢ããªã±ãŒã·ã§ã³ã®äœæãå¯èœã«ããŸãïŒ
- æ²¡å ¥åïŒä»®æ³ãªããžã§ã¯ããæ¬åœã«å®äžçã®äžéšã§ãããã®ããã«æããããã
- ã€ã³ã¿ã©ã¯ãã£ãïŒãŠãŒã¶ãŒãèªç¶ã§çŽæçãªæ¹æ³ã§ä»®æ³ãªããžã§ã¯ããšå¯Ÿè©±ã§ããã
- å®çšçïŒéšå±ã«å®¶å ·ãé 眮ããŠèŠèŠåãããããªããžã§ã¯ãéã®è·é¢ã枬å®ããããããªã©ãARã¢ããªã±ãŒã·ã§ã³ãå®äžçã®åé¡ã«å¯Ÿããå®çšçãªè§£æ±ºçãæäŸã§ããã
- ã¢ã¯ã»ã·ãã«ïŒWebXRãšå¹³é¢æ€åºã¯ããŠãŒã¶ãŒãå°çšã¢ããªãããŠã³ããŒãããããšãªããããŸããŸãªããã€ã¹ã§å©çšã§ããARäœéšãå¯èœã«ããã
WebXR平颿€åºã®ä»çµã¿
WebXRã®å¹³é¢æ€åºã¯ãéåžžã以äžã®ã¹ããããå«ã¿ãŸãïŒ
- å¹³é¢è¿œè·¡ã®èŠæ±ïŒWebXRã¢ããªã±ãŒã·ã§ã³ã¯ãå¹³é¢è¿œè·¡ãå«ãããã€ã¹ã®ARæ©èœãžã®ã¢ã¯ã»ã¹ãèŠæ±ããŸãã
- XRFrameã®ååŸïŒåãã¬ãŒã ã§ãã¢ããªã±ãŒã·ã§ã³ã¯`XRFrame`ãªããžã§ã¯ããååŸããŸããããã«ã¯ãã«ã¡ã©ã®ããŒãºãæ€åºãããå¹³é¢ãªã©ãçŸåšã®ARã»ãã·ã§ã³ã®ç¶æ ã«é¢ããæ å ±ãå«ãŸããŠããŸãã
- TrackedPlanesã®ã¯ãšãªïŒ`XRFrame`ãªããžã§ã¯ãã«ã¯`XRPlane`ãªããžã§ã¯ãã®ãªã¹ããå«ãŸããŠããããããããã·ãŒã³å ã§æ€åºãããå¹³é¢ã衚ããŸãã
- XRPlaneããŒã¿ã®åæïŒå`XRPlane`ãªããžã§ã¯ãã¯ãå¹³é¢ã«é¢ãã以äžã®æ å ±ãæäŸããŸãïŒ
- åãïŒå¹³é¢ãæ°Žå¹³ãåçŽãã
- äœçœ®ïŒ3Dã¯ãŒã«ãå ã§ã®å¹³é¢ã®äœçœ®ã
- ç¯å²ïŒå¹³é¢ã®å¹ ãšé«ãã
- ããªãŽã³ïŒæ€åºãããå¹³é¢ã®åœ¢ç¶ã衚ãå¢çããªãŽã³ã
- æçµå€æŽæå»ïŒå¹³é¢ã®ããããã£ãæåŸã«æŽæ°ãããæ¥æã瀺ãã¿ã€ã ã¹ã¿ã³ãã
- ã¬ã³ããªã³ã°ãšã€ã³ã¿ã©ã¯ã·ã§ã³ïŒã¢ããªã±ãŒã·ã§ã³ã¯ãã®æ å ±ã䜿çšããŠãæ€åºãããå¹³é¢äžã«ä»®æ³ãªããžã§ã¯ããã¬ã³ããªã³ã°ãããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãå¯èœã«ããŸãã
WebXR平颿€åºAPIãšã³ãŒãäŸ
JavaScriptãšThree.jsã®ãããªäººæ°ã®WebXRã©ã€ãã©ãªã䜿çšããã³ãŒãäŸãèŠãŠã¿ãŸãããïŒ
WebXRã»ãã·ã§ã³ã®åæåãšå¹³é¢è¿œè·¡ã®èŠæ±
ãŸããã€ããŒã·ãARã»ãã·ã§ã³ãèŠæ±ããæ€åºãããå¹³é¢ã远跡ãããããšãæå®ããå¿ èŠããããŸãïŒ
async function initXR() {
if (navigator.xr) {
const supported = await navigator.xr.isSessionSupported('immersive-ar');
if (supported) {
try {
session = await navigator.xr.requestSession('immersive-ar', {
requiredFeatures: ['plane-detection']
});
// Setup WebGL renderer and other scene elements
} catch (error) {
console.error("Error initializing XR session:", error);
}
} else {
console.log('immersive-ar not supported');
}
} else {
console.log('WebXR not supported');
}
}
XRFrameãšTrackedPlanesã®åŠç
ã¢ãã¡ãŒã·ã§ã³ã«ãŒãå ã§ã`XRFrame`ã«ã¢ã¯ã»ã¹ããæ€åºãããå¹³é¢ãå埩åŠçããå¿ èŠããããŸãïŒ
function animate(time, frame) {
if (frame) {
const glLayer = session.renderState.baseLayer;
renderer.render(scene, camera);
const xrViewerPose = frame.getViewerPose(xrRefSpace);
if (xrViewerPose) {
// Update camera position/rotation based on xrViewerPose
const planes = session.getWorldInformation().detectedPlanes;
if (planes) {
for (const plane of planes) {
// Access plane data and update the corresponding mesh in your scene
updatePlaneMesh(plane);
}
}
}
}
session.requestAnimationFrame(animate);
}
æ€åºãããåå¹³é¢ã®ã¡ãã·ã¥äœæ
æ€åºãããå¹³é¢ãèŠèŠåããããã«ãã·ã³ãã«ãªã¡ãã·ã¥ïŒäŸïŒ`THREE.Mesh`ïŒãäœæãã`XRPlane`ã®ç¯å²ãšããªãŽã³ã«åºã¥ããŠãã®ãžãªã¡ããªãæŽæ°ã§ããŸããããªãŽã³ã®é ç¹ãã¬ã³ããªã³ã°ãšã³ãžã³ã«é©ãããžãªã¡ããªåœ¢åŒã«å€æãããã«ããŒé¢æ°ãå¿ èŠã«ãªãå ŽåããããŸãã
function updatePlaneMesh(plane) {
if (!planeMeshes.has(plane.id)) {
// Create a new mesh if it doesn't exist
const geometry = new THREE.PlaneGeometry(plane.width, plane.height);
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true });
const mesh = new THREE.Mesh(geometry, material);
mesh.userData.plane = plane;
scene.add(mesh);
planeMeshes.set(plane.id, mesh);
} else {
// Update the existing mesh's geometry based on plane extents.
const mesh = planeMeshes.get(plane.id);
const planeGeometry = mesh.geometry;
planeGeometry.width = plane.width;
planeGeometry.height = plane.height;
planeGeometry.needsUpdate = true;
//Position and orientation of the plane.
const pose = frame.getPose(plane.planeSpace, xrRefSpace);
mesh.position.set(pose.transform.position.x,pose.transform.position.y,pose.transform.position.z);
mesh.quaternion.set(pose.transform.orientation.x,pose.transform.orientation.y,pose.transform.orientation.z,pose.transform.orientation.w);
}
}
ARé 眮æè¡ïŒä»®æ³ãªããžã§ã¯ãã®ã¢ã³ã«ãŒ
å¹³é¢ãæ€åºããããããã«ä»®æ³ãªããžã§ã¯ããã¢ã³ã«ãŒã§ããŸããããã«ã¯ãæ€åºãããå¹³é¢ã«å¯ŸããŠæ£ããäœçœ®ãšåãã«ä»®æ³ãªããžã§ã¯ããé 眮ããããšãå«ãŸããŸãããããå®çŸããã«ã¯ããã€ãã®æ¹æ³ããããŸãïŒ
ã¬ã€ãã£ã¹ãã£ã³ã°
ã¬ã€ãã£ã¹ãã£ã³ã°ã¯ããŠãŒã¶ãŒã®ããã€ã¹ïŒéåžžã¯ç»é¢ã®äžå€®ïŒããã·ãŒã³ã«ã¬ã€ïŒå ç·ïŒãæå°ããããšã§ããã¬ã€ãæ€åºãããå¹³é¢ãšäº€å·®ããå Žåããã®äº€å·®ç¹ã䜿çšããŠä»®æ³ãªããžã§ã¯ããé 眮ã§ããŸããããã«ããããŠãŒã¶ãŒã¯ç»é¢ãã¿ããããŠç®çã®è¡šé¢ã«ãªããžã§ã¯ããé 眮ã§ããŸãã
function placeObject(x, y) {
const raycaster = new THREE.Raycaster();
const mouse = new THREE.Vector2();
mouse.x = (x / renderer.domElement.clientWidth) * 2 - 1;
mouse.y = -(y / renderer.domElement.clientHeight) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
const intersects = raycaster.intersectObjects(scene.children, true); //Recursively search for intersections.
if (intersects.length > 0) {
// Place the object at the intersection point
const intersection = intersects[0];
const newObject = createVirtualObject();
newObject.position.copy(intersection.point);
//Adjust orientation of the object as required
newObject.quaternion.copy(camera.quaternion);
scene.add(newObject);
}
}
ããããã¹ãAPIã®äœ¿çšïŒå©çšå¯èœãªå ŽåïŒ
WebXRããããã¹ãAPIã¯ãã¬ã€ãšå®äžçãšã®äº€å·®ç¹ãèŠã€ããããã®ããçŽæ¥çãªæ¹æ³ãæäŸããŸããããã«ããããŠãŒã¶ãŒã®ãã¥ãŒããã¬ã€ãæå°ãã`XRHitResult`ãªããžã§ã¯ãã®ãªã¹ããååŸã§ããŸããåãªããžã§ã¯ãã¯å®äžçã®è¡šé¢ãšã®äº€å·®ç¹ã衚ããŸããããã¯ãçŽç²ã«æ€åºãããå¹³é¢ã«äŸåãããããå¹ççã§æ£ç¢ºã§ãã
async function createHitTestSource() {
hitTestSource = await session.requestHitTestSource({
space: xrRefSpace
});
}
function placeObjectAtHit() {
if (hitTestSource) {
const hitTestResults = frame.getHitTestResults(hitTestSource);
if (hitTestResults.length > 0) {
const hit = hitTestResults[0];
const pose = hit.getPose(xrRefSpace);
// Create or update the virtual object
const newObject = createVirtualObject();
newObject.position.set(pose.transform.position.x,pose.transform.position.y,pose.transform.position.z);
newObject.quaternion.set(pose.transform.orientation.x,pose.transform.orientation.y,pose.transform.orientation.z,pose.transform.orientation.w);
scene.add(newObject);
}
}
}
å¹³é¢ã®å¢çãžã®ã¢ã³ã«ãŒ
å¹³é¢ã®å¢çã衚ãããªãŽã³ã䜿çšããŠãæ€åºãããå¹³é¢ã®ç«¯ã«æ²¿ã£ãŠããŸãã¯å éšã«ãªããžã§ã¯ããé 眮ããããšãã§ããŸããããã¯ãå¹³é¢ã«å¯ŸããŠç¹å®ã®æ§æã§ä»®æ³ãªããžã§ã¯ããé 眮ããã®ã«åœ¹ç«ã¡ãŸãã
ã°ããŒãã«ããã€ã¹åãã®WebXR平颿€åºã®æé©å
WebXRã¢ããªã±ãŒã·ã§ã³ã¯ããã€ãšã³ãã®ã¹ããŒããã©ã³ããäœæ¶è²»é»åã®ã¢ãã€ã«ããã€ã¹ãŸã§ãå¹ åºãããã€ã¹ã§ã¹ã ãŒãºã«å®è¡ãããå¿ èŠããããŸãã平颿€åºã®å®è£ ãæé©åããããšã¯ãããŸããŸãªããŒããŠã§ã¢æ§æã§è¯å¥œãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã確ä¿ããããã«äžå¯æ¬ ã§ãã
ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé
- 平颿°ã®å¶éïŒããŸãã«ãå€ãã®å¹³é¢ã远跡ãããšãèšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸããã¢ããªã±ãŒã·ã§ã³ãã¢ã¯ãã£ãã«è¿œè·¡ããå¹³é¢ã®æ°ãå¶éãããããŠãŒã¶ãŒã«æãè¿ãå¹³é¢ãåªå ããããšãæ€èšããŠãã ããã
- å¹³é¢ã¡ãã·ã¥ãžãªã¡ããªã®æé©åïŒå¹³é¢ã¡ãã·ã¥ã«ã¯å¹ççãªãžãªã¡ããªè¡šçŸã䜿çšããŸããéå°ãªè©³çްãäžèŠãªé ç¹ã¯é¿ããŠãã ããã
- WebAssemblyã®äœ¿çšïŒå¹³é¢æ€åºã¢ã«ãŽãªãºã ãã«ã¹ã¿ã ã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã«ãŒãã³ãªã©ãèšç®éã®å€ãã¿ã¹ã¯ãå®è£ ããããã«WebAssemblyïŒWASMïŒã®äœ¿çšãæ€èšããŠãã ãããWASMã¯JavaScriptãšæ¯èŒããŠå€§å¹ ãªããã©ãŒãã³ã¹åäžãããããããšãã§ããŸãã
- ã¬ã³ããªã³ã°è² è·ã®åæžïŒä»®æ³ãªããžã§ã¯ããå¹³é¢ã¡ãã·ã¥ãå«ãã·ãŒã³å šäœã®ã¬ã³ããªã³ã°ãæé©åããããšãéèŠã§ããLODïŒLevel of DetailïŒããªã¯ã«ãŒãžã§ã³ã«ãªã³ã°ããã¯ã¹ãã£å§çž®ãªã©ã®æè¡ã䜿çšããŠãã¬ã³ããªã³ã°ã®è² è·ã軜æžããŸãã
- ãããã¡ã€ãªã³ã°ãšæé©åïŒãã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã宿çã«ãããã¡ã€ãªã³ã°ããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŸãããããã¡ã€ãªã³ã°çµæã«åºã¥ããŠã³ãŒããæé©åããŠãã ããã
ã¯ãã¹ãã©ãããã©ãŒã äºææ§
- æ©èœæ€åºïŒæ©èœæ€åºã䜿çšããŠãããã€ã¹ã平颿€åºããµããŒãããŠãããã©ããã確èªããŠãã䜿çšããŸãã平颿€åºããµããŒãããŠããªãããã€ã¹ã«ã¯ããã©ãŒã«ããã¯ã¡ã«ããºã ã代æ¿äœéšãæäŸããŠãã ããã
- ARCoreãšARKitïŒWebXRã®å®è£ ã¯éåžžãARCoreïŒAndroidçšïŒãARKitïŒiOSçšïŒãªã©ã®åºç€ãšãªãARãã¬ãŒã ã¯ãŒã¯ã«äŸåããŠããŸãããããã®ãã¬ãŒã ã¯ãŒã¯éã§ã®å¹³é¢æ€åºã®èœåãšããã©ãŒãã³ã¹ã®éãã«æ³šæããŠãã ããã
- ããã€ã¹åºæã®æé©åïŒããŸããŸãªããã€ã¹ã®ç¬èªã®æ©èœã掻çšããããã«ãããã€ã¹åºæã®æé©åãå®è£ ããããšãæ€èšããŠãã ããã
ã¢ã¯ã»ã·ããªãã£ã«é¢ããèæ ®äºé
WebXRã®ARäœéšãé害ã®ãããŠãŒã¶ãŒã«ãã¢ã¯ã»ã¹ããããããããšãäžå¯æ¬ ã§ãã平颿€åºã«ã€ããŠã¯ã以äžãèæ ®ããŠãã ããïŒ
- èŠèŠçãã£ãŒãããã¯ïŒå¹³é¢ãæ€åºããããšãã«ãå¹³é¢ãéç«ã£ãè²ããã¿ãŒã³ã§åŒ·èª¿è¡šç€ºãããªã©ãæç¢ºãªèŠèŠçãã£ãŒãããã¯ãæäŸããŸããããã¯ãäœèŠåã®ãŠãŒã¶ãŒãç°å¢ãçè§£ããã®ã«åœ¹ç«ã¡ãŸãã
- èŽèŠçãã£ãŒãããã¯ïŒå¹³é¢ãæ€åºãããããšã瀺ãããã«ã广é³ãå¹³é¢ã®åããšãµã€ãºã«ã€ããŠã®å£é ã§ã®èª¬æãªã©ãèŽèŠçãªãã£ãŒãããã¯ãæäŸããŸãã
- 代æ¿å ¥åæ¹æ³ïŒã¿ãããžã§ã¹ãã£ãŒã«å ããŠãé³å£°ã³ãã³ããããŒããŒãå ¥åãªã©ãä»®æ³ãªããžã§ã¯ããé 眮ããããã®ä»£æ¿å ¥åæ¹æ³ãæäŸããŸãã
- 調æŽå¯èœãªé 眮ïŒãŠãŒã¶ãŒãåã ã®ããŒãºã奜ã¿ã«åãããŠä»®æ³ãªããžã§ã¯ãã®äœçœ®ãšåãã調æŽã§ããããã«ããŸãã
ã°ããŒãã«ãªWebXR平颿€åºéçºã®ããã®ãã¹ããã©ã¯ãã£ã¹
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«WebXR平颿€åºã¢ããªã±ãŒã·ã§ã³ãéçºããã«ã¯ãæåçãªéããèšèªãµããŒããããŸããŸãªããã€ã¹ã®èœåãæ éã«èæ ®ããå¿ èŠããããŸãã以äžã«ããã€ãã®ãã¹ããã©ã¯ãã£ã¹ã瀺ããŸãïŒ
- ããŒã«ãªãŒãŒã·ã§ã³ïŒã¢ããªã±ãŒã·ã§ã³ã®ããã¹ããšé³å£°ã³ã³ãã³ããããŒã«ã©ã€ãºããŠãããŸããŸãªèšèªããµããŒãããŸããããŸããŸãªå°åã«é©ããæ¥ä»ãšæ°å€ã®åœ¢åŒã䜿çšããŠãã ããã
- æåçé æ ®ïŒãŠãŒã¶ãŒãARäœéšãã©ã®ããã«èªèãã察話ãããã«ãããæåçãªéãã«æ³šæããŠãã ãããæåçã«ããªã±ãŒããªã·ã³ãã«ãç»åã®äœ¿çšã¯é¿ããŠãã ããã
- ã¢ã¯ã»ã·ããªãã£ïŒã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ã«åŸã£ãŠãã¢ããªã±ãŒã·ã§ã³ãé害ãæã€äººã ã«ãå©çšå¯èœã§ããããšã確èªããŠãã ããã
- ããã©ãŒãã³ã¹æé©åïŒã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ãæé©åããŠãå¹ åºãããã€ã¹ã§ã¹ã ãŒãºã«åäœããããã«ããŸãã
- ãã¹ãïŒããŸããŸãªããã€ã¹ãç°å¢ã§ã¢ããªã±ãŒã·ã§ã³ã培åºçã«ãã¹ãããåé¡ãç¹å®ããŠä¿®æ£ããŸãããã¹ãããã»ã¹ã«ã¯ãããŸããŸãªå°åãæåçèæ¯ãæã€ãŠãŒã¶ãŒãå«ããããšãæ€èšããŠãã ããã
- ãã©ã€ãã·ãŒïŒãŠãŒã¶ãŒã®ããŒã¿ãã©ã®ããã«äœ¿çšãããŠããããæç¢ºã«äŒããé¢é£ãããã©ã€ãã·ãŒèŠå¶ãéµå®ããŠããããšã確èªããŠãã ããã
- æç¢ºãªæç€ºã®æäŸïŒããŸããŸãªæè¡çç¿ç床ãèæ ®ããŠãã¢ããªã±ãŒã·ã§ã³ã®äœ¿ç𿹿³ã«ã€ããŠæç¢ºã§ç°¡æœãªæç€ºãæäŸããŠãã ããã
WebXR平颿€åºã¢ããªã±ãŒã·ã§ã³ã®äŸ
WebXR平颿€åºã¯ã以äžãå«ãããŸããŸãªARã¢ããªã±ãŒã·ã§ã³ã®äœæã«äœ¿çšã§ããŸãïŒ
- å®¶å ·ã®èŠèŠåïŒãŠãŒã¶ãŒãè³Œå ¥åã«èªå® ã§å®¶å ·ãã©ã®ããã«èŠããããèŠèŠåã§ããŸããIKEA PlaceãæåãªäŸã§ãã
- ã²ãŒã ïŒä»®æ³ãã£ã©ã¯ã¿ãŒããªããžã§ã¯ããå®äžçãšçžäºäœçšããæ²¡å ¥åã®ARã²ãŒã äœéšãäœæããŸãã
- æè²ïŒåŠçãèªåã®ç°å¢ã§3Dã¢ãã«ãã·ãã¥ã¬ãŒã·ã§ã³ãæ¢æ±ã§ããã€ã³ã¿ã©ã¯ãã£ããªæè²äœéšãæäŸããŸããäŸãã°ãããŒãã«ãããã§å€ªéœç³»ãèŠèŠåãããªã©ã§ãã
- ç£æ¥çšã¢ããªã±ãŒã·ã§ã³ïŒäœæ¥è ãæç€ºæžãèšèšå³ããã®ä»ã®æ å ±ãçŽæ¥èŠéå ã«èŠèŠåã§ããããã«ããå¹çãšæ£ç¢ºæ§ãåäžãããŸãã
- å°å£²ïŒé¡§å®¢ãè³Œå ¥åã«ä»®æ³ã®è¡£é¡ãã¢ã¯ã»ãµãªãŒã詊çã§ããããã«ããŸããã»ãã©ã©ã®ããŒãã£ã«ã¢ãŒãã£ã¹ããè¯ãäŸã§ãã
- 枬å®ããŒã«ïŒãŠãŒã¶ãŒãã¢ãã€ã«ããã€ã¹ã䜿çšããŠå®äžçã®è·é¢ãé¢ç©ã枬å®ã§ããããã«ããŸãã
WebXR平颿€åºã®æªæ¥
WebXR平颿€åºã¯æ¥éã«é²åããŠããåéã§ããããã€ã¹ããã匷åã«ãªããã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã¢ã«ãŽãªãºã ãæ¹åãããã«ã€ããŠãå°æ¥çã«ã¯ããã«æ£ç¢ºã§å ç¢ãªå¹³é¢æ€åºæ©èœãæåŸ ã§ããŸããå°æ¥ã®æœåšçãªçºå±ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- 平颿€åºç²ŸåºŠã®åäžïŒå°é£ãªç°å¢ã§ããããæ£ç¢ºã§å ç¢ãªå¹³é¢æ€åºã
- ã»ãã³ãã£ãã¯çè§£ïŒæ€åºãããå¹³é¢ã®æå³ãçè§£ããèœåãäŸãã°ãç°ãªãçš®é¡ã®è¡šé¢ïŒæšæãéå±ãã¬ã©ã¹ãªã©ïŒãåºå¥ããã
- ã·ãŒã³åæ§ç¯ïŒå¹³ããªè¡šé¢ã ãã§ãªããç°å¢å šäœã®3Dã¢ãã«ãäœæããèœåã
- AIã«ãã平颿€åºïŒAIãšæ©æ¢°åŠç¿ã掻çšããŠã平颿€åºã®ããã©ãŒãã³ã¹ãšç²ŸåºŠãåäžãããã
- ã¯ã©ãŠããµãŒãã¹ãšã®çµ±åïŒã¯ã©ãŠããµãŒãã¹ãšã®çµ±åã«ãããå ±åARäœéšãå ±æä»®æ³ç©ºéãå¯èœã«ããã
çµè«
WebXR平颿€åºã¯ããŠã§ããã©ãŠã¶å ã§çŽæ¥ãæ²¡å ¥åã§ã€ã³ã¿ã©ã¯ãã£ããªARäœéšã®äœæãå¯èœã«ãã匷åãªæè¡ã§ãã衚é¢èªèãšARé 眮æè¡ããã¹ã¿ãŒããããšã§ãéçºè ã¯ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«é¿ãé åçãªã¢ããªã±ãŒã·ã§ã³ãäœæã§ããŸããããã©ãŒãã³ã¹ã®æé©åãã¢ã¯ã»ã·ããªãã£ãæåçé æ ®ãèæ ®ããããšã§ãããªãã®WebXRã¢ããªã±ãŒã·ã§ã³ãäžçäžã®äººã ã«ãšã£ãŠäœ¿ããããæ¥œãããã®ã«ãªãããšãä¿èšŒã§ããŸãã
WebXRæè¡ãé²åãç¶ããã«ã€ããŠã平颿€åºã¯æ¡åŒµçŸå®ã®æªæ¥ã圢äœãäžã§ãŸããŸãéèŠãªåœ¹å²ãæããã§ããããå®éšãç¶ãã奜å¥å¿ãæã¡ç¶ããWebXRã§å¯èœãªããšã®éçãæŒãåºãç¶ããŠãã ããïŒ